package fiscal;

// Generated 10/07/2009 10:49:54 by Hibernate Tools 3.2.0.b9

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Ticket generated by hbm2java
 */
@Entity
@Table(name = "TBTICKET")
public class FiscalTicket implements java.io.Serializable {

	private Long id;
	private FiscalInfracao infracao;
	private FiscalTipoCarroceria tipoCarroceria;
	private FiscalTipoMercadoria tipoMercadoria;
	private FiscalSituacaoPesagem situacaoPesagem;
	private FiscalMunicipio municipioByDestinoMercadoria;
	private FiscalAlerta alerta;
	private FiscalMunicipio municipioByOrigemMercadoria;
	private FiscalSituacaoTicket situacaoTicket;
	private FiscalClassificacao classificacao;
	private Double pbt;
	private Double pesoLiquido;
	private Double pbtPesagemLenta;
	private Double pesoLiquidoPesagemLenta;
	private Double pbtPesagemMovimento;
	private Double pesoLiquidoPesagemMovimento;
	private Double pesoDeclaradoNF;
	private String autoInfracao;
	private Long numeroCupom;
	private List<FiscalHistoricoTicket> historicoTickets = new ArrayList<FiscalHistoricoTicket>(0);
	private List<FiscalTrafego> trafegos = new ArrayList<FiscalTrafego>(0);
	private Date dataCriacaoTicket;
	private Integer autuado;
	private Double taraPadrao;
	private Double taraDeclarado;
	private FiscalUsuario usuario;
	private List<FiscalTicketMotivo> ticketMotivos = new ArrayList<FiscalTicketMotivo>(0);

	@Column(name = "AUTUADO")
	public Integer getAutuado() {
		return autuado;
	}

	public void setAutuado(Integer autuado) {
		this.autuado = autuado;
	}

	@Column(name = "TARA_PADRAO")
	public Double getTaraPadrao() {
		return taraPadrao;
	}

	public void setTaraPadrao(Double taraPadrao) {
		this.taraPadrao = taraPadrao;
	}

	public FiscalTicket() {
	}

	public FiscalTicket(Long id, FiscalSituacaoPesagem situacaoPesagem, FiscalSituacaoTicket situacaoTicket,
			FiscalClassificacao classificacao) {
		this.id = id;
		this.situacaoPesagem = situacaoPesagem;
		this.situacaoTicket = situacaoTicket;
		this.classificacao = classificacao;
	}

	public FiscalTicket(Long id, FiscalInfracao infracao, FiscalTipoCarroceria tipoCarroceria, FiscalTipoMercadoria tipoMercadoria,
			FiscalSituacaoPesagem situacaoPesagem, FiscalMunicipio municipioByDestinoMercadoria, FiscalAlerta alerta,
			FiscalMunicipio municipioByOrigemMercadoria, FiscalSituacaoTicket situacaoTicket, FiscalClassificacao classificacao,
			Double pbt, Double pesoLiquido, Double pbtPesagemLenta, Double pesoLiquidoPesagemLenta,
			Double pbtPesagemMovimento, Double pesoLiquidoPesagemMovimento, String autoInfracao, Long numeroCupom,
			List<FiscalHistoricoTicket> historicoTickets, List<FiscalTrafego> trafegos, List<FiscalTicketMotivo> ticketMotivos) {
		this.id = id;
		this.infracao = infracao;
		this.tipoCarroceria = tipoCarroceria;
		this.tipoMercadoria = tipoMercadoria;
		this.situacaoPesagem = situacaoPesagem;
		this.municipioByDestinoMercadoria = municipioByDestinoMercadoria;
		this.alerta = alerta;
		this.municipioByOrigemMercadoria = municipioByOrigemMercadoria;
		this.situacaoTicket = situacaoTicket;
		this.classificacao = classificacao;
		this.pbt = pbt;
		this.pesoLiquido = pesoLiquido;
		this.pbtPesagemLenta = pbtPesagemLenta;
		this.pesoLiquidoPesagemLenta = pesoLiquidoPesagemLenta;
		this.pbtPesagemMovimento = pbtPesagemMovimento;
		this.pesoLiquidoPesagemMovimento = pesoLiquidoPesagemMovimento;
		this.autoInfracao = autoInfracao;
		this.numeroCupom = numeroCupom;
		this.historicoTickets = historicoTickets;
		this.trafegos = trafegos;
		this.ticketMotivos = ticketMotivos;
	}

	@Id
	@GeneratedValue
	@Column(name = "TICKET_ID", unique = true, nullable = false, precision = 38, scale = 0)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "INFRACAO_ID")
	public FiscalInfracao getInfracao() {
		return this.infracao;
	}

	public void setInfracao(FiscalInfracao infracao) {
		this.infracao = infracao;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_CARROCERIA_ID")
	public FiscalTipoCarroceria getTipoCarroceria() {
		return this.tipoCarroceria;
	}

	public void setTipoCarroceria(FiscalTipoCarroceria tipoCarroceria) {
		this.tipoCarroceria = tipoCarroceria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "USUARIO_ID")
	public FiscalUsuario getUsuario() {
		return usuario;
	}

	public void setUsuario(FiscalUsuario usuario) {
		this.usuario = usuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_MERCADORIA_ID")
	public FiscalTipoMercadoria getTipoMercadoria() {
		return this.tipoMercadoria;
	}

	public void setTipoMercadoria(FiscalTipoMercadoria tipoMercadoria) {
		this.tipoMercadoria = tipoMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "SITUACAO_ATUAL_PESAGEM", nullable = false)
	public FiscalSituacaoPesagem getSituacaoPesagem() {
		return this.situacaoPesagem;
	}

	public void setSituacaoPesagem(FiscalSituacaoPesagem situacaoPesagem) {
		this.situacaoPesagem = situacaoPesagem;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "DESTINO_MERCADORIA")
	public FiscalMunicipio getMunicipioByDestinoMercadoria() {
		return this.municipioByDestinoMercadoria;
	}

	public void setMunicipioByDestinoMercadoria(FiscalMunicipio municipioByDestinoMercadoria) {
		this.municipioByDestinoMercadoria = municipioByDestinoMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ALERTA_ID")
	public FiscalAlerta getAlerta() {
		return this.alerta;
	}

	public void setAlerta(FiscalAlerta alerta) {
		this.alerta = alerta;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ORIGEM_MERCADORIA")
	public FiscalMunicipio getMunicipioByOrigemMercadoria() {
		return this.municipioByOrigemMercadoria;
	}

	public void setMunicipioByOrigemMercadoria(FiscalMunicipio municipioByOrigemMercadoria) {
		this.municipioByOrigemMercadoria = municipioByOrigemMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "SITUACAO_ATUAL_TICKET", nullable = false)
	public FiscalSituacaoTicket getSituacaoTicket() {
		return this.situacaoTicket;
	}

	public void setSituacaoTicket(FiscalSituacaoTicket situacaoTicket) {
		this.situacaoTicket = situacaoTicket;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "CLASSIFICACAO_ID", nullable = false)
	public FiscalClassificacao getClassificacao() {
		return this.classificacao;
	}

	public void setClassificacao(FiscalClassificacao classificacao) {
		this.classificacao = classificacao;
	}

	@Column(name = "PBT", precision = 50, scale = 0)
	public Double getPbt() {
		return this.pbt;
	}

	public void setPbt(Double pbt) {
		this.pbt = pbt;
	}

	@Column(name = "PESO_LIQUIDO", precision = 50, scale = 0)
	public Double getPesoLiquido() {
		return this.pesoLiquido;
	}

	public void setPesoLiquido(Double pesoLiquido) {
		this.pesoLiquido = pesoLiquido;
	}

	@Column(name = "PBT_PESAGEM_LENTA", precision = 50, scale = 0)
	public Double getPbtPesagemLenta() {
		return this.pbtPesagemLenta;
	}

	public void setPbtPesagemLenta(Double pbtPesagemLenta) {
		this.pbtPesagemLenta = pbtPesagemLenta;
	}

	@Column(name = "PESO_LIQUIDO_PESAGEM_LENTA")
	public Double getPesoLiquidoPesagemLenta() {
		return this.pesoLiquidoPesagemLenta;
	}

	public void setPesoLiquidoPesagemLenta(Double pesoLiquidoPesagemLenta) {
		this.pesoLiquidoPesagemLenta = pesoLiquidoPesagemLenta;
	}

	@Column(name = "PBT_PESAGEM_MOVIMENTO", precision = 50, scale = 0)
	public Double getPbtPesagemMovimento() {
		return this.pbtPesagemMovimento;
	}

	public void setPbtPesagemMovimento(Double pbtPesagemMovimento) {
		this.pbtPesagemMovimento = pbtPesagemMovimento;
	}

	@Column(name = "PESO_LIQUIDO_PESAGEM_MOVIMENTO", precision = 50, scale = 0)
	public Double getPesoLiquidoPesagemMovimento() {
		return this.pesoLiquidoPesagemMovimento;
	}

	public void setPesoLiquidoPesagemMovimento(Double pesoLiquidoPesagemMovimento) {
		this.pesoLiquidoPesagemMovimento = pesoLiquidoPesagemMovimento;
	}

	@Column(name = "AUTO_INFRACAO", length = 50)
	public String getAutoInfracao() {
		return this.autoInfracao;
	}

	public void setAutoInfracao(String autoInfracao) {
		this.autoInfracao = autoInfracao;
	}

	@Column(name = "NUMERO_CUPOM", precision = 38, scale = 0)
	public Long getNumeroCupom() {
		return this.numeroCupom;
	}

	public void setNumeroCupom(Long numeroCupom) {
		this.numeroCupom = numeroCupom;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<FiscalHistoricoTicket> getHistoricoTickets() {
		return this.historicoTickets;
	}

	public void setHistoricoTickets(List<FiscalHistoricoTicket> historicoTickets) {
		this.historicoTickets = historicoTickets;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<FiscalTrafego> getTrafegos() {
		return this.trafegos;
	}

	public void setTrafegos(List<FiscalTrafego> trafegos) {
		this.trafegos = trafegos;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_CRIACAO_TICKET")
	public Date getDataCriacaoTicket() {
		return dataCriacaoTicket;
	}

	public void setDataCriacaoTicket(Date dataCriacaoTicket) {
		this.dataCriacaoTicket = dataCriacaoTicket;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<FiscalTicketMotivo> getTicketMotivos() {
		return ticketMotivos;
	}

	@Column(name = "PESO_DECLARADO_NF")
	public Double getPesoDeclaradoNF() {
		return pesoDeclaradoNF;
	}

	@Column(name = "TARA_DECLARADO")
	public Double getTaraDeclarado() {
		return taraDeclarado;
	}

	public void setTaraDeclarado(Double taraDeclarado) {
		this.taraDeclarado = taraDeclarado;
	}

	public void setPesoDeclaradoNF(Double pesoDeclaradoNF) {
		this.pesoDeclaradoNF = pesoDeclaradoNF;
	}

	public void setTicketMotivos(List<FiscalTicketMotivo> ticketMotivos) {
		this.ticketMotivos = ticketMotivos;
	}

	// The following is extra code specified in the hbm.xml files
	private static final long serialVersionUID = 1L;

	// end of extra code specified in the hbm.xml files

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		FiscalTicket other = (FiscalTicket) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

}